# 导入套索回归模型、糖尿病数据集、划分样本的方法及NumPy库
from sklearn.linear_model import Lasso
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
import numpy as np

# 将数据集划分为训练集和测试集
x, y = load_diabetes().data, load_diabetes().target
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=8)

# 训练模型
model = Lasso(alpha=0.1, max_iter=100000)  # 实例化套索回归模型，设置正则化参数alpha=0.1
model.fit(x_train, y_train)
a = np.sum(model.coef_ != 0)  # 模型特征属性不等于0的个数

# 评估模型，计算模型的R²得分（决定系数）
r21 = model.score(x_train, y_train)  # 计算模型在训练集上的R²得分
r22 = model.score(x_test, y_test)    # 计算模型在测试集上的R²得分

# 输出结果
print("模型在训练集上的R²得分为：", r21)
print("模型在测试集上的R²得分为：", r22)
print("套索回归使用的特征数为：", a) 
